home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / docs / asm_guide / assembler course / 9.s < prev    next >
Text File  |  1989-08-31  |  2KB  |  64 lines

  1.  
  2. ; we will now make a copperlist with 1 wait line. 
  3. ; the starting and ending of the copperlist is the same as in the
  4. ; previous program, but we now change the position of the wait-line
  5. ; in the copperlist, so the 'colorbar' seems to move over the screen
  6.  
  7. top:    movem.l    d0-d7/a0-a6,-(a7)
  8.  
  9.     move.l    $4,a6        ; start of execlib
  10.  
  11.     move.l    #libname,a1    ; open the gfxlibrary...
  12.     jsr    -408(a6)    ; 
  13.     move.l    d0,gfxbase    ; store the result
  14.  
  15.                 ; start our own copperlist:
  16.     move.w    #%0000001110100000,$dff096
  17.     move.l    #copperlist,$dff080
  18.     clr.w    $dff088
  19.     move.w    #%1000001010000000,$dff096
  20.  
  21. loop:    cmp.b    #00,$dff006    ; check if the electronbeam of the
  22.     bne.s    loop        ; monitor has reached the top of the
  23.                 ; screen. This moment is the famous
  24.                 ; VERTICAL BLANK. Most demos use the
  25.                 ; verticale blank to start a routine
  26.                 ; We will do this to. Remove these 
  27.                 ; 2 lines, and have a look what
  28.                 ; happens...
  29.  
  30.     ; this is our 'demoroutine' :
  31.  
  32.     add.b    #1,waitline    ; waitline is a label in our cpprlst
  33.                 ; by changing the first byte in it,
  34.                 ; we change the vertic.waitposition
  35.                 ; of the waitcommand (check it out!)
  36.  
  37.     btst    #6,$bfe001    ; wellknown wait-for-click
  38.     bne.s    loop
  39.  
  40.     move.l    gfxbase,a6        ; restore the old cpprlist
  41.     move.l    38(a6),$dff080        ;
  42.     clr.w    $dff088            ;
  43.     move.w    #%1000001111100000,$dff096
  44.  
  45.     move.l    $4,a6            ; close gfxlib
  46.     move.l    gfxbase,a1
  47.     jsr    -414(a6)
  48.  
  49.     movem.l    (a7)+,d0-d7/a0-a6
  50.     rts
  51.  
  52.  
  53. libname:    dc.b    "graphics.library",0
  54.         even
  55. gfxbase:    dc.l    0    ; reserve a longword for the
  56.                 ; start of the library    
  57.  
  58. copperlist:
  59.         dc.l    $01800444
  60. waitline:    dc.l    $400ffffe
  61.         dc.l    $01800888
  62.         dc.l    $fffffffe    ; end of copperlist
  63.  
  64.